Application Delivery Controllers, Server Load-balancers, or Proxies are commonly deployed in Data centers for scalability and redundancy purposes. Typically applications are deployed in multi-tiered environments (e.g., Web, App, DB, etc.) and load-balancers are used in one or more of these tiers. The load-balancer will serve each incoming connection to one of the available servers in the load-balancer's tier. While most load-balancers in the market today can do some form of Health checks (e.g., ICMP probes, HTTP checks, etc.) and some form of load algorithms (e.g., round-robin, least conn, least load, etc.) to determine which of the servers are still alive and which server to send the connection to, these checks are limited to the load-balancer's respective tier.
Many application flows traverse multiple tiers, and there could be multiple servers that can be load balanced to in each of the tiers. Thus the flow can potentially be traversing one of many paths. As a result, a load-balancer can make individual decisions in each tier that cumulatively lead to total or partial application failures, or may not be the best path for the end-to-end flow. Accordingly, improvements are needed.